#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
财联社电报定时采集调度器
"""

import schedule
import time
from datetime import datetime
from core.collector import CailianPressCollector


class TelegramScheduler:
    def __init__(self):
        self.collector = CailianPressCollector()
        
    def job(self):
        """定时任务执行的函数"""
        current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        print(f"[{current_time}] 开始执行定时采集任务...")
        try:
            collected_count = self.collector.collect_and_save()
            print(f"[{current_time}] 定时采集任务执行完成，本次采集到 {collected_count} 条新数据")
        except Exception as e:
            print(f"[{current_time}] 定时任务执行出错: {e}")
            
    def run_scheduler(self, interval_minutes=5):
        """运行定时调度器"""
        current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        print(f"[{current_time}] 启动财联社电报定时采集器...")
        print(f"采集间隔: {interval_minutes} 分钟")
        print(f"[{current_time}] 定时任务将每 {interval_minutes} 分钟执行一次")
        
        # 立即执行一次
        self.job()
        
        # 设置定时任务
        schedule.every(interval_minutes).minutes.do(self.job)
        
        # 也可以设置其他时间间隔的任务
        # schedule.every().hour.do(self.job)
        # schedule.every().day.at("10:30").do(self.job)
        
        print("定时采集器已启动，按 Ctrl+C 停止")
        
        try:
            while True:
                schedule.run_pending()
                time.sleep(1)
        except KeyboardInterrupt:
            print("\n定时采集器已停止")


# 测试代码
if __name__ == "__main__":
    import argparse
    
    # 解析命令行参数
    parser = argparse.ArgumentParser(description='财联社电报定时采集调度器')
    parser.add_argument('--interval', type=int, default=5, help='采集间隔（分钟）')
    args = parser.parse_args()
    
    # 创建调度器实例
    scheduler = TelegramScheduler()
    
    # 运行调度器，设置采集间隔
    scheduler.run_scheduler(args.interval)